package com.wires.lu.practice;


/**
 * jps
 *
 * jinfo -flag 配置项 进程号 :查看进程对应属性设置的值
 *
 * java -XX:+PrintFlagsInitial  查看jVM参数初始值
 * java -XX:+PrintFlagsFinal -version  查看jVM参数修改值
 *
 * java -XX:+PrintFlagsFinal -XX:MetaspaceSize=512m 修改并查看jvm参数值
 *  java -XX:+PrintCommandLineFlags -version  查看默认的垃圾回收方式
 * = 初始化参数 未被修改
 * := jvm根据系统性能修改 或者认为修改过
 *-Xms：初始大小内存 默认为物理内存1/64 等价于 -XX:InitialHeapSize
 *-Xmx:最大分配内存 默认为物理内存的1/4 等价于 -XX:MaxHeapSize
 *-Xss:设置单个线程栈的大小 一般默认为512k-1024k 等价于 -XX:ThreadStackSizejs -Xss128k
 *-Xmn:设置年轻代大小
 * -XX:MetaspaceSize:设置元空间大小 元空间的本质和永久代(jdk7)类似 都是对jvm规范中方法区的实现  不过元空间和永久代之间最大的区别在于:元空间并不在虚拟机中，而是使用本地内存，因此 默认情况下，元空间的大小仅受本地内存限制
 * -XX:InitialHeapSize=401881472  kay/value形式
 * -XX:MaxHeapSize=6430103552
 * -XX:+PrintCommandLineFlags     boolean 形式
 * -XX:+UseCompressedClassPointers
 * -XX:+UseCompressedOops
 * -XX:-UseLargePagesIndividualAllocation
 * -XX:+UseParallelGC //并行垃圾回收器（jdk8默认）
 *
 * -XX:+PrintGCDetials :打印垃圾回收
 *                                        栈:gc前 gc后 总     堆:gc前   后    总
 * [GC (Allocation Failure) [PSYoungGen: 2019K->504K(2560K)] 2019K->688K(9728K), 0.0012433 secs]
 *
 *[名称 GC前内存占用——>GC后内存占用(该区内存总大小)]
 * [Full GC (Allocation Failure) [PSYoungGen: 504K->0K(2560K)] [ParOldGen: 200K->668K(7168K)] 704K->668K(9728K), [Metaspace: 3494K->3494K(1056768K)], 0.0100954 secs]
 * -XX:SurvivorRatio  设置新生代中eden和S0/S1空间的比例 默认： -XX:SurvivorRatio=8,Eden:S0:S1=8:1:1  假如-XX:SurvivorRatio=4 Eden:S0:S1=4:1:1 SurvivorRatio值就是Eden区的比例占多少 S0/S1相同
 *
 *-XX:NewRatio :配置年轻代和年老代在堆结构中的占比
 * 默认：-XX:NewRatio=2 新生代占1老年代占2 年轻代占整个堆得1/3 假如 -XX:NewRatio=4 新生代占1 老年代占4，年轻代占整个堆得1/5  NewRatio得值就是设置老年代的占比，剩下的1给新生代
 *
 * -XX:MaxTenuringThreshold  设置垃圾最大年龄
 */

public class HelloGC {

    public static void main(String[] args) throws InterruptedException {
       System.out.println("********HelloGC");
        Thread.sleep(Integer.MAX_VALUE);
        long l = Runtime.getRuntime().totalMemory();//返回Java虚拟机中的内存总量
        long l1 = Runtime.getRuntime().maxMemory();//返回Java虚拟机试图使用的最大内存量
        System.out.println("TOTAL_MEMORY -Xms="+(l/(1024*1024))+"MB");
        System.out.println("MAX_MEMEORY -Xmx="+l1/(1024*1024)+"MB");
        //byte[] arry=new byte[50*1024*1024];
    }
}
